/**
 * 
 */
package com.cn.practice.factory;

/**
 * 工厂模式-简单工厂
 * 
 * @author zhangyang
 *
 */
public class SimpleFacoryDemo {
	public static void main(String[] args) {
		/**
		 * 需求实现 利用简单工厂实现一个短信发送工厂模式
		 */
		MessageFactory factory = new MessageFactory("TX");
		factory.sendMessage();

	}
}

abstract class Message {
	// 短信发送内容
	private String message;

	abstract void send();

	void callback() {
		System.out.println("短信发送回调");
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

}

class TXMessage extends Message {

	@Override
	void send() {
		// TODO Auto-generated method stub
		this.setMessage("腾讯短信模板");
		System.out.println("发送腾讯成功");
	}

}

class QNMessage extends Message {

	@Override
	void send() {
		// TODO Auto-generated method stub
		this.setMessage("腾讯短信模板");
		System.out.println("发送腾讯成功");
	}

}

/**
 * 短信发送工厂
 * 
 * @author zhangyang
 *
 */
class MessageFactory {
	String messageType;

	public MessageFactory(String messageType) {
		this.messageType = messageType;
	}

	public Message sendMessage() {
		Message message = null;
		if (messageType.equals("TX")) {
			message = new TXMessage();
		} else if (messageType.equals("QN")) {
			message = new QNMessage();
		}
		// 调用发送过程
		message.send();
		message.getMessage();
		message.callback();
		return message;
	}
}